/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.brain.core.dto;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;
import javax.persistence.TableGenerator;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import javax.persistence.Transient;

/**
 *
 * @author Guille
 */
@Entity
@Table(name = "TCORE_SOCIO_NEGOCIO")
public class SocioNegocioDto implements Serializable {

    private static final long serialVersionUID = 1L;
    // @Max(value=?)  @Min(value=?)//if you know range of your decimal fields consider using these annotations to enforce field validation
    @Id
    @GeneratedValue(strategy = GenerationType.TABLE, generator = "SEQ_SOCIO_NEGOCIO")
    @TableGenerator(name = "SEQ_SOCIO_NEGOCIO", table = "TCORE_ENTIDAD", pkColumnName = "NOMBRE", valueColumnName = "CORRELATIVO", pkColumnValue = "SOCIO_NEGOCIO", allocationSize = 1)
    private Long id;
    @JoinColumn(name = "ESTADO", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto estadoDto;
    @Column(name = "USUARIO")
    private Long usuario;
    @Column(name = "FECHA")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fecha;
    @Column(name = "TERMINAL")
    private String terminal;
    @Column(name = "INLINESTYLE")
    private String inlinestyle;
    @Column(name = "COMENTARIO")
    private String comentario;
    @JoinColumn(name = "TIPO_DOCUMENTO", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto tipoDocumentoDto;
    @Column(name = "NUMERO_DOCUMENTO")
    private String numeroDocumento;
    @Column(name = "NOMBRES")
    private String nombres;
    @Column(name = "APELLIDO_PATERNO")
    private String apellidoPaterno;
    @Column(name = "APELLIDO_MATERNO")
    private String apellidoMaterno;
    @Column(name = "RAZON_SOCIAL")
    private String razonSocial;
    @Column(name = "DESCRIPCION")
    private String descripcion;
    @Column(name = "PROVEEDOR")
    private Boolean proveedor;
    @Column(name = "CLIENTE")
    private Boolean cliente;
    @Column(name = "COLABORADOR")
    private Boolean colaborador;
    @Column(name = "INTERNO")
    private Boolean interno;
    @JoinColumn(name = "PAIS", referencedColumnName = "ID")
    @ManyToOne
    private UbigeoDto paisDto;
    @Column(name = "FECHA_NACIMIENTO")
    @Temporal(TemporalType.TIMESTAMP)
    private Date fechaNacimiento;
    @JoinColumn(name = "SEXO", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto sexoDto;
    @JoinColumn(name = "RUBRO", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto rubroDto;
    @JoinColumn(name = "CARGO", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto cargoDto;
    @Column(name = "PERSONA_CONTACTO")
    private String personaContacto;
    @JoinColumn(name = "CARGO_CONTACTO", referencedColumnName = "ID")
    @ManyToOne
    private ParametroDto cargoContactoDto;
    @Column(name = "TELEFONO_CONTACTO")
    private String telefonoContacto;
    @Column(name = "FAX_CONTACTO")
    private String faxContacto;
    @Column(name = "EMAIL_CONTACTO")
    private String emailContacto;
    @Column(name = "REPRESENTADA")
    private Boolean representada;
    @Column(name = "ORGANIZACION")
    private Long organizacion;
    @Column(name = "DIRECCION")
    private String direccion;
    @Column(name = "REFERENCIA")
    private String referencia;
    
    @Transient
    private String proveedorTexto;
    
    @Transient
    private String clienteTexto;
    
    @Transient
    private String representadaTexto;
    
    @Transient
    private String colaboradorTexto;
    
    @Transient
    private String descripcionGeneral;

    public SocioNegocioDto() {
    }

    public SocioNegocioDto(Long id) {
        this.id = id;
    }

    public SocioNegocioDto(Long id, ParametroDto estadoDto, Long usuario, Date fecha, String terminal, String comentario, ParametroDto tipoDocumentoDto, String numeroDocumento) {
        this.id = id;
        this.estadoDto = estadoDto;
        this.usuario = usuario;
        this.fecha = fecha;
        this.terminal = terminal;
        this.comentario = comentario;
        this.tipoDocumentoDto = tipoDocumentoDto;
        this.numeroDocumento = numeroDocumento;
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public ParametroDto getEstadoDto() {
        return estadoDto;
    }

    public void setEstadoDto(ParametroDto estadoDto) {
        this.estadoDto = estadoDto;
    }

    public Long getUsuario() {
        return usuario;
    }

    public void setUsuario(Long usuario) {
        this.usuario = usuario;
    }

    public Date getFecha() {
        return fecha;
    }

    public void setFecha(Date fecha) {
        this.fecha = fecha;
    }

    public String getTerminal() {
        return terminal;
    }

    public void setTerminal(String terminal) {
        this.terminal = terminal;
    }

    public String getInlinestyle() {
        return inlinestyle;
    }

    public void setInlinestyle(String inlinestyle) {
        this.inlinestyle = inlinestyle;
    }

    public String getComentario() {
        return comentario;
    }

    public void setComentario(String comentario) {
        this.comentario = comentario;
    }

    public ParametroDto getTipoDocumentoDto() {
        return tipoDocumentoDto;
    }

    public void setTipoDocumentoDto(ParametroDto tipoDocumentoDto) {
        this.tipoDocumentoDto = tipoDocumentoDto;
    }

    public String getNumeroDocumento() {
        return numeroDocumento;
    }

    public void setNumeroDocumento(String numeroDocumento) {
        this.numeroDocumento = numeroDocumento;
    }

    public String getNombres() {
        return nombres;
    }

    public void setNombres(String nombres) {
        this.nombres = nombres;
    }

    public String getApellidoPaterno() {
        return apellidoPaterno;
    }

    public void setApellidoPaterno(String apellidoPaterno) {
        this.apellidoPaterno = apellidoPaterno;
    }

    public String getApellidoMaterno() {
        return apellidoMaterno;
    }

    public void setApellidoMaterno(String apellidoMaterno) {
        this.apellidoMaterno = apellidoMaterno;
    }

    public String getRazonSocial() {
        return razonSocial;
    }

    public void setRazonSocial(String razonSocial) {
        this.razonSocial = razonSocial;
    }

    public String getDescripcion() {
        return descripcion;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public Boolean getProveedor() {
        return proveedor;
    }

    public void setProveedor(Boolean proveedor) {
        this.proveedor = proveedor;
    }

    public Boolean getCliente() {
        return cliente;
    }

    public void setCliente(Boolean cliente) {
        this.cliente = cliente;
    }

    public Boolean getColaborador() {
        return colaborador;
    }

    public void setColaborador(Boolean colaborador) {
        this.colaborador = colaborador;
    }

    public Boolean getInterno() {
        return interno;
    }

    public void setInterno(Boolean interno) {
        this.interno = interno;
    }

    public UbigeoDto getPaisDto() {
        return paisDto;
    }

    public void setPaisDto(UbigeoDto paisDto) {
        this.paisDto = paisDto;
    }

    public Date getFechaNacimiento() {
        return fechaNacimiento;
    }

    public void setFechaNacimiento(Date fechaNacimiento) {
        this.fechaNacimiento = fechaNacimiento;
    }

    public ParametroDto getSexoDto() {
        return sexoDto;
    }

    public void setSexoDto(ParametroDto sexoDto) {
        this.sexoDto = sexoDto;
    }

    public ParametroDto getRubroDto() {
        return rubroDto;
    }

    public void setRubroDto(ParametroDto rubroDto) {
        this.rubroDto = rubroDto;
    }

    public ParametroDto getCargoDto() {
        return cargoDto;
    }

    public void setCargoDto(ParametroDto cargoDto) {
        this.cargoDto = cargoDto;
    }

    public String getPersonaContacto() {
        return personaContacto;
    }

    public void setPersonaContacto(String personaContacto) {
        this.personaContacto = personaContacto;
    }

    public ParametroDto getCargoContactoDto() {
        return cargoContactoDto;
    }

    public void setCargoContactoDto(ParametroDto cargoContactoDto) {
        this.cargoContactoDto = cargoContactoDto;
    }

    public String getTelefonoContacto() {
        return telefonoContacto;
    }

    public void setTelefonoContacto(String telefonoContacto) {
        this.telefonoContacto = telefonoContacto;
    }

    public String getFaxContacto() {
        return faxContacto;
    }

    public void setFaxContacto(String faxContacto) {
        this.faxContacto = faxContacto;
    }

    public String getEmailContacto() {
        return emailContacto;
    }

    public void setEmailContacto(String emailContacto) {
        this.emailContacto = emailContacto;
    }

    public Boolean getRepresentada() {
        return representada;
    }

    public void setRepresentada(Boolean representada) {
        this.representada = representada;
    }

    public Long getOrganizacion() {
        return organizacion;
    }

    public void setOrganizacion(Long organizacion) {
        this.organizacion = organizacion;
    }

    public String getDireccion() {
        return direccion;
    }

    public void setDireccion(String direccion) {
        this.direccion = direccion;
    }

    public String getReferencia() {
        return referencia;
    }

    public void setReferencia(String referencia) {
        this.referencia = referencia;
    }

    public String getClienteTexto() {
        return (this.cliente == Boolean.TRUE ? "SI" : "NO");
    }

    public void setClienteTexto(String clienteTexto) {
        this.clienteTexto = clienteTexto;
    }

    public String getColaboradorTexto() {
        return (this.colaborador == Boolean.TRUE ? "SI" : "NO");
    }

    public void setColaboradorTexto(String colaboradorTexto) {
        this.colaboradorTexto = colaboradorTexto;
    }

    public String getProveedorTexto() {
        return (this.proveedor == Boolean.TRUE ? "SI" : "NO");
    }

    public void setProveedorTexto(String proveedorTexto) {
        this.proveedorTexto = proveedorTexto;
    }

    public String getRepresentadaTexto() {
        return (this.representada == Boolean.TRUE ? "SI" : "NO");
    }

    public void setRepresentadaTexto(String representadaTexto) {
        this.representadaTexto = representadaTexto;
    }

    public String getDescripcionGeneral() {
        this.descripcionGeneral =  this.descripcion +"("+this.tipoDocumentoDto.getDescripcion() +":"+this.numeroDocumento+")";
        return descripcionGeneral;
    }

    public void setDescripcionGeneral(String descripcionGeneral) {
        this.descripcionGeneral = descripcionGeneral;
    }

    
    
    @Override
    public int hashCode() {
        int hash = 0;
        hash += (id != null ? id.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof SocioNegocioDto)) {
            return false;
        }
        SocioNegocioDto other = (SocioNegocioDto) object;
        if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "com.brain.model.dto.SocioNegocioDto[ id=" + id + " ]";
    }
}
